One approach for scheduling activities and resources with a scheduling system has been to use an optimization to determine a schedule. In this approach, an expression, generally called a cost function, is defined. The cost function processor computes a single quantity as a weighted sum of characteristics of the quality of the schedule. An optimization program is then run to find the schedule that results in the minimum or maximum value of the cost function. Such optimizers typically require many evaluations of potential solutions to find the optimal schedule, although some are designed to limit their number of iterations and find a good solution in less time. In any case, optimizers tend to require a considerable amount of time to run.
Another approach is generally known as heuristic scheduling. A heuristic scheduler employs a set of rules or a strategy to find a solution. Two known heuristic scheduling approaches are known as forward scheduling and a backward scheduling. In a forward scheduler, resources are allocated forward in time from some starting point. In a backward scheduler, resources are allocated first from a target date needed to complete on time, and if there are not enough resources available at that date, then resources are allocated at progressively earlier dates either until sufficient resources have been allocated or a starting limit is reached.